package com.ruoyi.result.patents.domain.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.system.domain.result_entity.Author;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;
import java.util.List;

/**
 * 专利信息对象 result_patents
 *
 * @author ruoyi
 * @date 2025-01-14
 */
@Data
public class ResultPatentsDTO extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    // 新增：上传时间范围起始时间
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createTimeStart;

    // 新增：上传时间范围结束时间
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createTimeEnd;

    @ApiModelProperty("角色id")
    private List<Long> roleIds;

    @ApiModelProperty("岗位id")
    private List<Long> postIds;

    @ApiModelProperty("部门id")
    private Long deptId;

    @ApiModelProperty("发布时间列表")
    private List<Date> queryPublishDate;

    /** 主键，自动递增的专利ID */
    private Long id;

    /** 专利名称 */
    @Excel(name = "专利名称")
    private String title;

    /** 专利类型 */
    @Excel(name = "专利类型")
    private String patentType;

    /** 专利状态 */
    @Excel(name = "专利状态")
    private String patentStatus;

    /** 专利编号 */
    @Excel(name = "专利编号")
    private String patentNumber;

    /** 专利权人 */
    @Excel(name = "专利权人")
    private String patentOwner;

    /** 授权公告日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "授权公告日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date authorizationDate;

    /** 申请编号 */
    @Excel(name = "申请编号")
    private String applicationNumber;

    /** 专利申请日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "专利申请日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applicationDate;

    /** 本人排名 */
    @Excel(name = "本人排名")
    private Long authorRank;

    /** 备注信息 */
    @Excel(name = "备注信息")
    private String remarks;

    /** 关联课题 */
    @Excel(name = "关联课题")
    private Long projectId;

    /** 作者信息 */
    @Excel(name = "作者信息")
    private List<Author> authorInfo;

    /** 成果同步 */
    @Excel(name = "成果同步")
    private String syncStatus;

    /** 创建时间 */
    @Excel(name = "创建时间", readConverterExp = "$column.readConverterExp()")
    private Date createdAt;

    /** 更新时间 */
    @Excel(name = "更新时间", readConverterExp = "$column.readConverterExp()")
    private Date updatedAt;

    /** PDF路径 */
    @Excel(name = "PDF路径", readConverterExp = "$column.readConverterExp()")
    private String pdfUrl;

    /** 关联用户ID */
    @Excel(name = "关联用户ID", readConverterExp = "$column.readConverterExp()")
    private Long userId;

    private Integer isDeleted;

    /** 关联用户ID列表 */
    @ApiModelProperty("关联用户id")
    private List<Long> userIdList;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setTitle(String title)
    {
        this.title = title;
    }

    public String getTitle()
    {
        return title;
    }

    public void setPatentType(String patentType)
    {
        this.patentType = patentType;
    }

    public String getPatentType()
    {
        return patentType;
    }

    public void setPatentStatus(String patentStatus)
    {
        this.patentStatus = patentStatus;
    }

    public String getPatentStatus()
    {
        return patentStatus;
    }

    public void setPatentNumber(String patentNumber)
    {
        this.patentNumber = patentNumber;
    }

    public String getPatentNumber()
    {
        return patentNumber;
    }

    public void setPatentOwner(String patentOwner)
    {
        this.patentOwner = patentOwner;
    }

    public String getPatentOwner()
    {
        return patentOwner;
    }

    public void setAuthorizationDate(Date authorizationDate)
    {
        this.authorizationDate = authorizationDate;
    }

    public Date getAuthorizationDate()
    {
        return authorizationDate;
    }

    public void setApplicationNumber(String applicationNumber)
    {
        this.applicationNumber = applicationNumber;
    }

    public String getApplicationNumber()
    {
        return applicationNumber;
    }

    public void setApplicationDate(Date applicationDate)
    {
        this.applicationDate = applicationDate;
    }

    public Date getApplicationDate()
    {
        return applicationDate;
    }

    public void setAuthorRank(Long authorRank)
    {
        this.authorRank = authorRank;
    }

    public Long getAuthorRank()
    {
        return authorRank;
    }

    public void setRemarks(String remarks)
    {
        this.remarks = remarks;
    }

    public String getRemarks()
    {
        return remarks;
    }

    public void setProjectId(Long projectId)
    {
        this.projectId = projectId;
    }

    public Long getProjectId()
    {
        return projectId;
    }

    public void setAuthorInfo(List<Author> authorInfo)
    {
        this.authorInfo = authorInfo;
    }

    public List<Author> getAuthorInfo()
    {
        return authorInfo;
    }

    public void setSyncStatus(String syncStatus)
    {
        this.syncStatus = syncStatus;
    }

    public String getSyncStatus()
    {
        return syncStatus;
    }

    public void setCreatedAt(Date createdAt)
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt()
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt)
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt()
    {
        return updatedAt;
    }

    public void setPdfUrl(String pdfUrl)
    {
        this.pdfUrl = pdfUrl;
    }

    public String getPdfUrl()
    {
        return pdfUrl;
    }

    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("title", getTitle())
                .append("patentType", getPatentType())
                .append("patentStatus", getPatentStatus())
                .append("patentNumber", getPatentNumber())
                .append("patentOwner", getPatentOwner())
                .append("authorizationDate", getAuthorizationDate())
                .append("applicationNumber", getApplicationNumber())
                .append("applicationDate", getApplicationDate())
                .append("authorRank", getAuthorRank())
                .append("remarks", getRemarks())
                .append("projectId", getProjectId())
                .append("authorInfo", getAuthorInfo())
                .append("syncStatus", getSyncStatus())
                .append("createdAt", getCreatedAt())
                .append("updatedAt", getUpdatedAt())
                .append("pdfUrl", getPdfUrl())
                .append("userId", getUserId())
                .append("createTimeStart", getCreateTimeStart())
                .append("createTimeEnd", getCreateTimeEnd())
                .toString();
    }
}
